<template>
  <a-row :gutter="10">
    <a-col :md="24" :sm="24" style="margin-bottom: 20px">
      <a-card :bordered="false">
        <!-- 查询区域 -->
        <div class="table-page-search-wrapper">
          <!-- 搜索区域 -->
          <div class="header_left">
            <div class="header_left_top">
              <div class="icon_box">
                <i class="iconfont icon-31shouyexuanzhong"></i>
              </div>
              <div>
                <span class="name">排放边界管理</span>
                <p></p>
              </div>
            </div>
            <span class="total">0个项目,已在9分钟前更新</span>
          </div>

          <div class="header_right">
            <!-- 操作按钮区域 -->
            <div class="table-operator">
              <a-upload
                name="file"
                :showUploadList="false"
                :multiple="false"
                :action="importExcelUrl"
                :headers="tokenHeader"
                @change="handleImportExcel"
              >
                <a-button type="primary" icon="import">导入</a-button>
              </a-upload>
              <a-button
                style="border-right: 1px solid rgb(211, 209, 209)"
                type="primary"
                icon="download"
                @click="handleExportXls('排放边界管理')"
                >导出</a-button
              >
            </div>
            <!-- 表单搜索 -->
            <a-form
              class="form_"
              layout="inline"
              @keyup.enter.native="searchQuery"
            >
              <a-form-item>
                <a-input
                  placeholder="行业名称"
                  v-model="queryParam.industryName"
                ></a-input>
              </a-form-item>

              <span
                style="float: left; overflow: hidden"
                class="table-page-search-submitButtons"
              >
                <a-button type="primary" @click="searchQuery" icon="search"
                  >查询</a-button
                >
                <a-button type="primary" @click="searchReset" icon="reload"
                  >重置</a-button
                >
              </span>
            </a-form>
          </div>
        </div>
        <!-- 操作按钮区域 -->

        <div class="ant-alert ant-alert-info">
          <i class="anticon anticon-info-circle ant-alert-icon"> </i> 已选择
          <a
            ><b>{{ selectedRowKeys1.length }}</b></a
          >项
          <a @click="onClearSelected1">清空</a>
        </div>

        <div style="margin-top: 15px">
          <a-table
            style="height: 500px"
            ref="table"
            size="middle"
            bordered
            rowKey="id"
            :columns="columns"
            :dataSource="dataSource"
            :pagination="ipagination"
            :loading="loading"
            :rowSelection="{
              selectedRowKeys: selectedRowKeys1,
              onChange: onSelectChange1,
              type: 'radio',
            }"
            @change="handleTableChange"
          >
            <span slot="action" slot-scope="text, record">
              <!-- <a @click="handleOpen(record)">核算边界</a>
                   <a-divider type="vertical" /> -->
              <a @click="handlePerssion(record.id)">核算边界</a>
              <a-divider type="vertical" />
              <a @click="handleEdit(record)">编辑</a>
            </span>
          </a-table>
        </div>
        <!-- 右侧的角色权限配置 -->
        <discharge-boundary-modal
          @close="closeDischargeBoundary"
          ref="modalUserRole"
        ></discharge-boundary-modal>
        <!-- <user-role-modal ref="modalUserRole"></user-role-modal> -->
        <boundary-modal ref="modalForm" @ok="modalFormOk"></boundary-modal>
      </a-card>
    </a-col>
   
  </a-row>
</template>
<script>
import { ListMixin } from "@/mixins/ListMixin";
import { deleteAction, postAction, getAction } from "@/api/manage";
import SelectUserModal from "./User/SelectUserModal";
import BoundaryModal from "./Boundary/BoundaryModal.vue";
import DischargeBoundaryModal from "./Boundary/DischargeBoundaryModal.vue";
import UserModal from "./User/UserModal";
import { filterObj } from "@/utils/util";
import UserRoleModal from "./Role/UserRoleModal";
//   import moment from 'moment'

export default {
  name: "RoleUserList",
  mixins: [ListMixin],
  components: {
    UserRoleModal,
    BoundaryModal,
    SelectUserModal,
    DischargeBoundaryModal,
    UserModal,
    //   moment
  },
  data() {
    return {
      model1: {},
      model2: {},
      currentRoleId: "",
      queryParam1: {},
      queryParam2: {},
      dataSource1: [],
      dataSource2: [],
      ipagination1: {
        current: 1,
        pageSize: 10,
        pageSizeOptions: ["10", "20", "30"],
        showTotal: (total, range) => {
          return range[0] + "-" + range[1] + " 共" + total + "条";
        },
        showQuickJumper: true,
        showSizeChanger: true,
        total: 0,
      },
      ipagination2: {
        current: 1,
        pageSize: 10,
        pageSizeOptions: ["10", "20", "30"],
        showTotal: (total, range) => {
          return range[0] + "-" + range[1] + " 共" + total + "条";
        },
        showQuickJumper: true,
        showSizeChanger: true,
        total: 0,
      },
      isorter1: {
        column: "createTime",
        order: "desc",
      },
      isorter2: {
        column: "createTime",
        order: "desc",
      },
      filters1: {},
      filters2: {},
      loading1: false,
      loading2: false,
      selectedRowKeys1: [],
      selectedRowKeys2: [],
      selectionRows1: [],
      selectionRows2: [],
      test: {},
      rightcolval: 0,
      columns: [
        {
          title: "行业名称",
          align: "left",
          dataIndex: "industryName",
        },
        {
          title: "描述",
          align: "left",
          dataIndex: "description",
        },
        {
          title: "操作",
          dataIndex: "action",
          align: "left",
          scopedSlots: { customRender: "action" },
        },
      ],
      columns2: [
        {
          title: "用户账号",
          align: "left",
          dataIndex: "username",
          width: 120,
        },
        {
          title: "用户名称",
          align: "left",
          width: 100,
          dataIndex: "realname",
        },
        {
          title: "状态",
          align: "left",
          width: 80,
          dataIndex: "status_dictText",
        },

        {
          title: "操作",
          dataIndex: "action",
          scopedSlots: { customRender: "action" },
          align: "center",
          width: 120,
        },
      ],

      // 高级查询参数
      superQueryParams2: "",
      // 高级查询拼接条件
      superQueryMatchType2: "and",
      url: {
        list: "/accounting/gmAccountingIndustry/queryList",
        delete: "/sys/role/delete",
        list2: "/sys/user/userRoleList",
        addUserRole: "/sys/user/addSysUserRole",
        delete2: "/sys/user/deleteUserRole",
        deleteBatch2: "/sys/user/deleteUserRoleBatch",
        exportXlsUrl: "sys/role/exportXls",
        importExcelUrl: "sys/role/importExcel",
      },
    };
  },

  computed: {
    importExcelUrl: function () {
      return `${window._CONFIG["domianURL"]}/${this.url.importExcelUrl}`;
      // return "";
    },
  },
  methods: {
    // loadData() {
    //   this.refresh();
    // },
    // refresh() {
    //   this.loading = true;
    //   this.loadTree();
    // },
    // loadTree() {
    //   this.$axios.get("api/industry").then((res) => {
    //     //   console.log(res);
    //     this.dataSource = res.data;
    //     this.loading = false;
    //   });
    // },
    onSelectChange2(selectedRowKeys, selectionRows) {
      this.selectedRowKeys2 = selectedRowKeys;
      this.selectionRows2 = selectionRows;
    },
    onClearSelected2() {
      this.selectedRowKeys2 = [];
      this.selectionRows2 = [];
    },
    onClearSelected1() {
      this.selectedRowKeys1 = [];
      this.selectionRows1 = [];
    },
    onSelectChange1(selectedRowKeys, selectionRows) {
      this.$refs.modalUserRole.show(selectedRowKeys[0]);
      // this.currentRoleId = selectedRowKeys[0];
      this.selectedRowKeys1 = selectedRowKeys;
      // this.selectionRows1 = selectionRows;
      //   console.log(selectedRowKeys, selectionRows);
      // this.rightcolval = 1;
      // this.selectedRowKeys1 = selectedRowKeys;
      // this.selectionRows1 = selectionRows;
      // this.model1 = Object.assign({}, selectionRows[0]);
      // //   console.log(this.model1);
      // this.currentRoleId = selectedRowKeys[0];
      // this.loadData2();
    },
    onClearSelected() {},
    closeDischargeBoundary() {
      this.selectedRowKeys1 = [];
    },
    getQueryParams2() {
      //获取查询条件
      let sqp = {};
      if (this.superQueryParams2) {
        sqp["superQueryParams"] = encodeURI(this.superQueryParams2);
        sqp["superQueryMatchType"] = this.superQueryMatchType2;
      }
      var param = Object.assign(
        sqp,
        this.queryParam2,
        this.isorter2,
        this.filters2
      );
      param.field = this.getQueryField2();
      param.pageNo = this.ipagination2.current;
      param.pageSize = this.ipagination2.pageSize;
      return filterObj(param);
    },
    getQueryField2() {
      //TODO 字段权限控制
      var str = "id,";
      this.columns2.forEach(function (value) {
        str += "," + value.dataIndex;
      });
      return str;
    },
    handleEdit2: function (record) {
      this.$refs.modalForm2.title = "编辑";
      this.$refs.modalForm2.roleDisabled = true;
      this.$refs.modalForm2.edit(record);
    },
    handleAdd2: function () {
      if (this.currentRoleId == "") {
        this.$message.error("请选择一个角色!");
      } else {
        this.$refs.modalForm2.roleDisabled = true;
        this.$refs.modalForm2.title = "新增";
        this.$refs.modalForm2.edit({
          activitiSync: "1",
          userIdentity: 1,
          selectedroles: this.currentRoleId,
        });
      }
    },
    modalFormOk2() {
      // 新增/修改 成功时，重载列表
      this.loadData2();
    },
    loadData2(arg) {
      if (!this.url.list2) {
        this.$message.error("请设置url.list2属性!");
        return;
      }
      //加载数据 若传入参数1则加载第一页的内容
      if (arg === 1) {
        this.ipagination2.current = 1;
      }
      if (this.currentRoleId === "") return;
      let params = this.getQueryParams2(); //查询条件
      params.roleId = this.currentRoleId;
      this.loading2 = true;
      getAction(this.url.list2, params).then((res) => {
        if (res.success) {
          this.dataSource2 = res.result.records;
          this.ipagination2.total = res.result.total;
        }
        this.loading2 = false;
      });
    },
    handleDelete1: function (id) {
      this.handleDelete(id);
      this.dataSource2 = [];
      this.currentRoleId = "";
    },
    handleDelete2: function (id) {
      if (!this.url.delete2) {
        this.$message.error("请设置url.delete2属性!");
        return;
      }
      var that = this;
      deleteAction(that.url.delete2, {
        roleId: this.currentRoleId,
        userId: id,
      }).then((res) => {
        if (res.success) {
          that.$message.success(res.message);
          that.loadData2();
        } else {
          that.$message.warning(res.message);
        }
      });
    },
    batchDel2: function () {
      if (!this.url.deleteBatch2) {
        this.$message.error("请设置url.deleteBatch2属性!");
        return;
      }
      if (this.selectedRowKeys2.length <= 0) {
        this.$message.warning("请选择一条记录！");
        return;
      } else {
        var ids = "";
        for (var a = 0; a < this.selectedRowKeys2.length; a++) {
          ids += this.selectedRowKeys2[a] + ",";
        }
        var that = this;
        //   console.log(this.currentDeptId);
        this.$confirm({
          title: "确认取消关联",
          content: "是否删除选中数据?",
          onOk: function () {
            deleteAction(that.url.deleteBatch2, {
              roleId: that.currentRoleId,
              userIds: ids,
            }).then((res) => {
              if (res.success) {
                that.$message.success(res.message);
                that.loadData2();
                that.onClearSelected();
              } else {
                that.$message.warning(res.message);
              }
            });
          },
        });
      }
    },
    selectOK(data) {
      let params = {};
      params.roleId = this.currentRoleId;
      params.userIdList = [];
      for (var a = 0; a < data.length; a++) {
        params.userIdList.push(data[a]);
      }
      //   console.log(params);
      postAction(this.url.addUserRole, params).then((res) => {
        if (res.success) {
          this.loadData2();
          this.$message.success(res.message);
        } else {
          this.$message.warning(res.message);
        }
      });
    },

    handleAddUserRole() {
      if (this.currentRoleId == "") {
        this.$message.error("请选择一个角色!");
      } else {
        this.$refs.selectUserModal.visible = true;
      }
    },
    handleOpen(record) {
      this.rightcolval = 1;
      this.selectedRowKeys1 = [record.id];
      this.model1 = Object.assign({}, record);
      this.currentRoleId = record.id;
      this.onClearSelected2();
      this.loadData2();
    },
    /*handleEdit: function(record) {
        if (this.currentRoleId == '') {
          this.$message.error('请选择一个角色!')
        } else {
          this.$refs.modalForm.edit(record)
          this.$refs.modalForm.title = '编辑'
        }
      },*/
    searchQuery2() {
      this.loadData2(1);
    },
    searchReset2() {
      this.queryParam2 = {};
      this.loadData2(1);
    },
    handleTableChange2(pagination, filters, sorter) {
      //分页、排序、筛选变化时触发
      //TODO 筛选
      if (Object.keys(sorter).length > 0) {
        this.isorter2.column = sorter.field;
        this.isorter2.order = "ascend" == sorter.order ? "asc" : "desc";
      }
      this.ipagination2 = pagination;
      this.loadData2();
    },
    hideUserList() {
      //this.rightcolval = 0
      this.selectedRowKeys1 = [];
    },
    handlePerssion(id) {
      this.$refs.modalUserRole.show(id);
      this.selectedRowKeys1 = [id];
    },
  },
};
</script>
<style scoped lang="scss">
@import "@/assets/css/listcommon.scss";
/* @import '~@assets/less/common.less'; */
/** Button按钮间距 */
.ant-btn {
  margin-left: 8px;
}
</style>